package org.dromara.patrol.api.domain.vo;

import lombok.Data;
import org.dromara.common.core.enums.patrol.*;
import org.dromara.common.core.enums.patrol.template.MarkStrategy;
import org.dromara.common.core.enums.patrol.template.TemplateRuleType;
import org.dromara.patrol.api.model.ExecuteRule;

import java.io.Serial;
import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * 巡店报告专用任务信息 vo
 */
@Data
public class RemotePatrolTaskVo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;
    /**
     * 子任务id
     */
    private Long id;
    /**
     * 创建者id
     */
    private Long creator;
    /**
     * 任务名称
     */
    private String name;
    /**
     * ID名称映射
     */
    private Map<Long, String> nameMap;
    /**
     * 执行人id（接收者）
     */
    private Long userId;
    /**
     * 任务id
     */
    private Long taskId;
    /**
     * 实际开始时间
     */
    private Long startTime;
    /**
     * 实际结束时间
     */
    private Long finishTime;
    /**
     * 任务状态
     */
    private TaskFinishStatus status;
    /**
     * 租户id
     */
    private String tenantId;
    /**
     * 门店id
     */
    private Long storeId;
    /**
     * 执行人id（接收者）
     */
    private Long executor;
    /**
     * 定时任务id
     */
    private Long cycleTaskId;
    /**
     * 重复类型
     */
    private RepeatType cycleType;
    /**
     * 计划开始日期：2024-03-07
     */
    private String executeDateStart;
    /**
     * 计划结束日期：2024-04-30
     */
    private String executeDateEnd;
    /**
     * 计划开始时间：08:00:00
     */
    private String executeTimeStart;
    /**
     * 计划结束时间：08:00:00
     */
    private String executeTimeEnd;
    /**
     * 模板规则类型
     */
    private TemplateRuleType templateRule;
    /**
     * 模板id
     */
    private Long templateId;
    /**
     * 通知人ids
     */
    private List<Long> notifierIds;
    /**
     * 子任务的主任务标识（0 是，1 否）
     */
    private MainTaskType mainTask;
    /**
     * 创建任务时间
     */
    private Long taskCreatedTime;
    /**
     * 巡店任务类型
     */
    private TaskType taskType;
    /**
     * 巡店方式类型
     */
    private TaskSubType taskSubType;
    /**
     * 录像巡店开始时间
     */
    private Long videoStartTime;
    /**
     * 录像巡店结束时间
     */
    private Long videoEndTime;
    /**
     * 执行规则
     */
    private ExecuteRule executeRule;
    /**
     * 备注
     */
    private String remark;
    /**
     * 版本
     */
    private String ver;
    /**
     * 子任务计划结束时间戳
     */
    private Long executeEndTime;
    /**
     * 子任务计划开始时间戳
     */
    private Long executeStartTime;
    /**
     * 过期状态
     */
    private ExpiredStatus expiredStatus;
    /**
     * 巡店模板策略
     */
    private MarkStrategy markStrategy;
}
